C++安全编程与代码审计实践

📚 共计 30 章节
01
C++安全编程概述
安全编程的重要性 · 常见漏洞类型(缓冲区溢出、SQL注入、XSS)· 基本原则
基础概念
02
内存安全基础
栈与堆 · 指针与引用 · new/delete · 智能指针 unique_ptr/shared_ptr/weak_ptr
内存RAII
03
缓冲区溢出防御
栈/堆溢出原理 · strncpy/snprintf · 编译器安全选项 /GS -fstack-protector
溢出编译
04
字符串安全
C风格字符串风险 · std::string · printf格式化漏洞 · 安全格式化函数
字符串格式化
05
整数安全
整数溢出/下溢 · 有符号/无符号 · SafeInt/IntSafe · 编译器警告
整数算术
06
输入验证与净化
用户输入原则 · SQL注入防御(参数化) · 命令注入 · 路径遍历 · 正则安全
注入验证
07
文件操作安全
文件路径安全 · 临时文件 · 权限管理 · 描述符泄漏 · 竞态条件
文件IO
08
并发与多线程安全
竞态条件 · 互斥锁 · 死锁预防 · std::atomic · 线程安全设计
并发
09
异常安全编程
三个保证(基本/强/不抛出) · RAII · 异常安全容器 · noexcept
异常RAII
10
资源管理安全
RAII · 资源泄漏预防 · 句柄/描述符 · 自定义资源管理类
资源RAII
11
面向对象安全
继承/多态安全 · 虚函数 · 对象切片 · 友元 · 拷贝/移动语义
OOP多态
12
模板与泛型安全
模板元编程陷阱 · 类型萃取/SFINAE · C++20概念 · 特化风险
模板泛型
13
STL容器安全
vector/list/map · 迭代器失效 · 元素安全访问 · 自定义分配器
STL容器
14
算法安全
STL算法安全 · 排序/搜索 · mt19937 vs rand() · 密码学随机数
算法随机
15
网络编程安全
Socket安全 · TLS/SSL · DoS防御 · 协议解析 · WebSocket
网络加密
16
密码学基础
AES/RSA · SHA-256 · HMAC · 数字签名
密码哈希
17
安全编码规范
C++ Core Guidelines · SEI CERT · MISRA C++ · Clang-Tidy/Cppcheck
规范静态
18
静态代码分析
Clang Static Analyzer · PVS-Studio · Coverity · 自定义规则 · CI/CD
静态工具
19
动态代码分析
Valgrind · AddressSanitizer · UBSan · libFuzzer/AFL · 覆盖率
动态fuzz
20
代码审计方法论
审计流程 · 威胁建模(STRIDE/DREAD) · 风险评级 · 报告编写
审计方法论
21
OWASP Top 10与CWE
OWASP Top 10 2021 · CWE分类 · CVE查询
OWASPCWE
22
Web安全基础
HTTP安全头(CSP/HSTS) · XSS防御 · CSRF防御 · 会话管理
WebXSS
23
数据库安全
SQL注入深入防御 · 连接池 · 加密 · 审计日志 · 最小权限
数据库SQL
24
系统调用与API安全
系统调用安全 · Windows API(CreateProcess等) · POSIX · API钩子检测
系统API
25
嵌入式系统安全
嵌入式C++ · 固件安全 · HSM · RTOS安全 · IoT
嵌入式IoT
26
移动平台安全
Android NDK · iOS C++ · JNI安全 · 加固 · 逆向防御
移动NDK
27
安全测试技术
渗透测试 · 漏洞扫描 · 代码审查 · 回归测试 · 自动化框架
测试渗透
28
安全开发生命周期 (SDL)
微软SDL · 安全需求/设计/编码/测试/部署/运维
SDL流程
29
合规与法律
GDPR · HIPAA · PCI DSS · 出口管制 · 开源许可证
合规法律
30
案例分析与实战
真实CVE(Heartbleed/Shellshock) · 修复实践 · 漏洞奖励 · 社区资源
实战CVE